自我介绍 (5 分钟)

自我介绍部分

基础问题 (10 分钟)

框架

  1. fiber 原理
  2. diff 算法流程
  3. 虚拟 DOM
  4. Hooks 相关
  5. Vue3 比 Vue2 好的地方
  6. Vue2 Vue3 分别的响应式原理
    1. 依赖如何收集
    2. Vue2 的缺点

高级

  1. 依赖注入(说到 vscode 的架构的时候引出)

JS

  1. TODO: 模块化 ( UMD 发散到 Vite)
  2. 模块联邦?
  3. for in/for of. for in 循环对象,配合 obj.hasOwnProperty(key) 使用
  4. babel 的工作原理?
  5. TODO: 事件循环模型
  6. e.target 和 e.currentTarget 的区别
  7. 装饰器

CSS

  1. 黑白主题切换如何实现

前端

  1. 前端优化一般怎么做?

网络

  1. 三次握手、四次挥手
  2. TODO: Url 加载流程
  3. 浏览器缓存
    1. 强: Expires/Cache-Control: max-age; 弱: Last-Modified/If-Modified-Since, ETag/If-None-Match
  4. Cookie/Session
    1. 登录态如何种入。 (发散到前端安全)
  5. TODO: https 是如何工作的。https 证书如何签发? (从本地的 cli 中引入自签名证书引入)
    1. https 的加密流程?
    2. 证书颁发和验证流程

工程化

  1. Vite
    1. 为什么快?
    2. 构建原理和 HMR 原理
    3. 存在的问题
  2. Webpack
    1. loader 和 plugin。并简述手写的逻辑。组件库的 plugin or loader 处理修改人。 git log filename
    2. 性能优化方式
      1. Webpack5 直接使用 cache. 在 CI 中还需要将数据持久化。

安全

  1. 安全问题举例
  2. CSP 用来解决什么问题

项目 (20 分钟)

1. 介绍一下 vscode 这个项目 (10 分钟)

  1. 背景、角色、做了什么、成果
    1. 背景:
      1. 数据 xxx 背景。
    2. 角色: 1.
    3. 做了什么:
      1. 底座定制
      2. 业务扩展完善
        1. 文件系统 + Git
        2. LSP
        3. ...
      3. 脚手架工具完善
        1. yo
        2. test-web
        3. nls
        4. intl
      4. VS Code/Theia 源码贡献
    4. 成果:
  2. 技术选型、架构、工程化
    1. 技术选型,为什么选择 vscode?为什么选择 Web 版
    2. vscode 架构和设计
    3. 如何深入源码定制
      1. 原则: 尽可能不大概原有模块。
  3. 遇到的困难
    1. 部署。
      1. worker 的跨域解决方式。
    2. 源码同步更新。 质量如何保证? => 测试 => 单元测试、集成测试
    3. 深入源码定制。 无法使用 React 定制? 原因
    4. 流程推动。

延伸

  1. 应用市场如何做?
  2. Copilot 目前的进展是什么样的? vscode 扩展做了哪一些优化?你研究到什么程度? 如何内置扩展?
  3. Chat 部分有什么特别的?
  4. VS Code 不改很难实现的部分,该怎么修改? 没有发布的 API 该怎么使用?

2. 工程化 (5 分钟)

  1. 背景、角色、做了什么、成果
    1. 老工程的问题?
    2. 角色
  2. 既然你说到了,那你了解原理?
    1. vite
    2. webpack
  3. 打包如何优化
  4. 代码规范推广
  5. 困难:
    1. cli 工程年久失修

Vite 快的原因?

  1. 不是全部编译
  2. http 缓存

HMR Vite 和 Webpack 分别是怎么做的?

3. 微前端 (5 分钟)

  1. 背景、角色、做了什么、成果
    1. 背景:为什么需要微前端
  2. 既然你说到了,那你了解原理?
  3. 难点

场景 (10 分钟)

  1. TODO: 树、列表大数据虚拟列表的实现?
  2. TODO: 大文件上传的实现
  3. 新增一个 SDK 会如何设计

1. 重新设计类

  1. VS Code 二次开发有什么建议?
    1. 源码更新这一块:
    2. CI 首先需要完善。

2. xxx 怎么办?

手写 (15 分钟?)

  1. promise
    1. promise.all
  2. 微 宏任务的打印
  3. this 打印
  4. 深拷贝
  5. 实现最大并发是 2 的类
  6. 防抖、节流

算法

    1. 几种遍历方式
    2. 二叉树打印
  1. 链表
    1. 翻转
    2. 判断是否成环
  2. 爬楼梯
  3. 字符串
    1. 最大子序列和
    2. 最大回文子串
Last Updated:
Contributors: yiliang114